﻿namespace Shell.PocoDot
{
    /// <summary>
    /// 表示一个持久化设施, 提供了最为基础的持久化支持
    /// </summary>
    public interface IPersistent
    {
        /// <summary>
        /// 提交挂起的更改, 将其保存在持久化层
        /// </summary>
        /// <returns>此方法返回一个数值, 该数值表示本次提交所影响的持久化条目的数量</returns>
        /// <exception cref="System.InvalidOperationException">当前实例已被销毁</exception>
        int Submit();

        /// <summary>
        /// 撤消挂起的更改, 此方法将永久性的销毁挂起的未提交的更改并不可还原. 挂起的更改将不会被保存在持久化层
        /// </summary>
        void Rollback();
    }
}
